<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>function vs class</title>
</head>
<body>
    
    
    <script>
        function Person(a){//构造函数
            name=a;//私有属性 构造函数自己的 全局只有一份

            //构造函数中的共有属性共有方法，每个实例都有一份
            this.age=22;//公有属性 每个实例都有一份
            this.getName=function(){//p1.getName() "ww"
                return name;
            }

        }
        //原型上的方法所有实例共用一份
        Person.prototype.getName=function(){//原型上 p1.__proto__.getName() "ww1"
                return name+1;
            }
        Person.prototype.getMyName=function(){//原型上 p1.__proto__.getMyName() == p1.getMyName() "ww"
            return name;
        }

        class Gay{//语法糖
            constructor(a){//构造方法
                name=a;//私有属性 全局只有一份
                this.age=33;//公有属性 每个实例都有一份
                this.getName=function(){//g1.getName() "ww"
                    return name;
                }
            }
            getName(){//原型上 g1.__proto__.getName() "ww1"
                return name+1;
            }
            getMyName(){//原型上 g1.__proto__.getMyName() == g1.getMyName() "ww"
                return name;
            }
        }

        var p1=new Person('ww');
        var g1=new Gay('ww');
    </script>
</body>
</html>